package com.product.statemachine.common.entity;

import com.product.statemachine.common.event.Event;

/**
  * @author: caoxingming
  * @data: 2022/6/9 11:56 上午
  * @description: 通用领域聚合根
  **/
public interface IEntity<T> {


    /***
     * 检查状态机事件原状态是否和当前领域实体状态一致
     * @param event
     */
    void checkSourceStateIsEqualsToEntityState(Event event);


    /**
     * 实体通过唯一ID比较
     *
     * @param other 另一个实体
     * @return true 只要ID相同就返回ture，忽略属性
     */
    boolean sameIdentityAs(T other);

}
